package com.yonyou.gmmc.service.JDInterface.thread;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

import org.apache.log4j.Logger;

/** 定义一个盘子类，可以放鸡蛋和取鸡蛋 */  
public class BaseThread {  
	private Logger logger = Logger.getLogger(BaseThread.class);

    /** 装鸡蛋的盘子，大小为5 */  
	public BlockingQueue<Integer> eggs = new ArrayBlockingQueue<Integer>(100);  
      
    /** 放鸡蛋 */  
    public void putEgg(Integer egg) {  
        try {  
            eggs.put(egg);// 向盘子末尾放一个鸡蛋，如果盘子满了，当前线程阻塞  
        } catch (InterruptedException e) {  
        	logger.info(">>>>>>>>>>BaseThread:"+ e);  
        }  
        // 下面输出有时不准确，因为与put操作不是一个原子操作  
        logger.info(">>>>>>>>>>放入pool"+ egg); 
    }  
      
    /** 取鸡蛋 */  
    public Integer getEgg() {  
    	Integer egg = null;  
        try {  
            egg = eggs.take();// 从盘子开始取一个鸡蛋，如果盘子空了，当前线程阻塞  
        } catch (InterruptedException e) {  
        	logger.info(">>>>>>>>>>BaseThread:"+ e);  
        }  
  
        // 下面输出有时不准确，因为与take操作不是一个原子操作  
        logger.info(">>>>>>>>>>取出pool："+ egg);  
         
        return egg;  
    }  
      
}